iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 30
0

依需求重塑介面

有許多程式碼目的是支援其他程式碼-例如,設定其他函數輸入值或是對輸出值後續處理。
有個Python字典存放敏感的使用者資訊,於是先使用Cipher類別加密字典中的資訊。

user_info = {"username": "..","password":"..."}
user_str = json.dumps(user_info)
cipher = Cipher("aes_128_cbc",key=PRIVATE_KEY,init_vector=INIT_VECTOR,op=ENCODE)
encrypted_bytes = cipher.update(user_str)
encrypted_bytes += cipher.final() //傾印目前的128位元區塊
url = "http://example.com/?user_info=" + base64.urlsafe_b64encode(encrypted_bytes)

絕大部分程式碼卻是在處理「加密 Python 物件並轉換為符合 URL 規範的字串」,很容易就可以抽離這子問題:

def url_safe_encrypt(obj):
    obj_str = json.dump(obj)
    cipher = Cipher("aes_128_cbc",key=PRIVATE_KEY,init_vector=INIT_VECTOR,op=ENCODE)
    encrypted_bytes = cipher.update(user_str)
    encrypted_bytes += cipher.final() //傾印目前的128位元區塊
    return base64.urlsafe_b64encode(encrypted_bytes)

如此一來,就能簡化執行真正邏輯程式碼:

user_info = {"username": "..","password":"..."}
url = "http://example.com/?user_info=" + url_safe_encrypt(user_info)

Reference

  • <<易讀程式之美學-提升程式碼可讀性的簡單法則 >>(The Art of Readable Code)

上一篇
抽離不相關子問題--3
系列文
易讀程式之美學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言